草庐IT

【C++】switch 语句

全部标签

c++ - 在 C++17 中,是否可以使用带有初始值设定项的 if 语句来解包可选?

我正在使用std::optional编写一些代码,我想知道C++17的“带有初始化器的if语句”是否能够帮助解包值?std::optionaloptionalInt=GetOptionalInt();我在这里编写函数Unpack:if(auto[value,has_value]=optionalInt.Unpack();has_value){//Usevaluehere.}但是,我的问题是。C++17“带有初始化程序的if语句”在这里有帮助吗?如果是这样,它将如何编码?更新,这实际上主要是使用optional时的一个问题,它非常容易被滥用,因为optional和*optional都返回

c++ - 当且仅当语句不编译时,我可以编写成功的测试吗?

我想防止我类的客户做一些愚蠢的事情。为此,我使用了类型系统,并让我的类只接受特定类型作为输入。考虑以下示例(不是真正的代码,为了示例,我省略了虚拟析构函数之类的东西):classMyDataChunk{//LookMa!Implementation!};classSink;classSource{virtualvoidRun()=0;Sink*next_;voidSetNext(Sink*next){next_=next;}};classSink{virtualvoidGiveMeAChunk(constMyDataChunk&data){//Impl};};classIn{virtu

c++ - 如何在 C++ 代码中将我的 printf 语句限制为每行 80 个字符?

我的教授要求我的代码每行不超过80个字符,但我有一些printf语句超过了这个限制。有没有办法在不更改输出的情况下将此语句分成两行或更多行?请求示例:printf("\n%-20s%-4d%-20s%-4d%-20s%-4d\n%-20s%-4d%-20s%-4d%-20s%-4d\n%-20s%-4d%-20s%-4d%-20s%-4d\n%-20s%-4d%-20s%-4d%-20s%-4d\n%-20s%-4d%-20s%-4d\n","1-Ones",ones,"2-Twos",twos,"3-Threes",threes,"4-Fours",fours,"5-Fives",f

【JAVA WEB】JavaScript-条件语句

目录条件语句if……else语句三元表达式switch数组创建数组获取数组元素 新增数组元素1.通过修改length新增2.通过下标新增3.使用push进行追加元素删除数组中的元素调试条件语句if……else语句示例:  letnum=prompt("请输入数字:")  if(num%2==0)  {    alert("这个数字是偶数")  }  else  {    alert("这个数字是奇数")  }三元表达式 是ifelse的简化写法语法:条件?表达式1:表达式2//条件为真,返回表达式1的值,条件为假,返回表达式2的值//注意:三元表达式的优先级是比较低的switch 更适合多分枝

c++ - 在 switch 语句中从 int 到 enum 类的隐式转换

enumclasspid{Alpha,Beta,Gamma};intmain(){intpropId=2;switch(propId){casepid::Alpha:casepid::Beta:casepid::Gamma:break;}}以上片段在msvc2012中编译良好(并且有效)但在clang-3.4和g++-4.8中失败。这些需要static_cast(propId)在switch子句中使用。顺便说一下,没有显式转换的简单赋值,例如pida=propId;在每个编译器中给出错误。谁做对了? 最佳答案 标准第4条,“标准转换

c++ - 如何编写sql语句和绑定(bind)参数?

不幸的是,documentation完全没有例子(真的很奇怪),好像它假定所有读者都是优秀的程序员。然而,我是C++的新手,无法从文档中真正弄清楚如何真正准备和执行语句。我喜欢它在PDOforPHP中的实现方式。通常,我只是这样做:$s=$db->prepare("SELECTidFROMmytableWHEREid=:id");$s->bindParam(':id',$id);$s->execute();还是使用?标记:$data=array();$data[]=1;$data[]=2;$s=$db->prepare("SELECTidFROMmytableWHEREid=?orid

c++ - 复制语句如何识别其构造函数

在下面的代码中,当语句Xloc2=loc;被执行时,编译器识别出下​​面的构造函数应该运行,然后运行它。X(constX&x){val=x.val;out("X(X&)");我知道构造函数据说是一个复制构造函数,但我的问题是编译器如何知道构造函数属于该语句?是否有关于复制构造函数的结构应该如何构造以便在执行复制语句时可以识别和运行的规则?#include"std_lib_facilities_4.h"usingnamespacestd;structX{intval;voidout(conststring&s){cerr">ch;return0;}std_lib_facilities是h

c++ - return 语句是否为按值返回的函数创建一个临时对象?

在学习C++11右值引用和移动语义时,我开始对函数究竟如何返回值来初始化变量感到困惑。看下面的例子:WidgetmakeWidget(){Widgetw;…returnw;}Widgetw1=makeWidget();这里我假设没有RVO(即编译不会省略复制/移动)。当执行返回语句returnw;时,执行函数:1)在众所周知的位置(调用者知道的某个固定寄存器或内存位置)复制初始化一个临时对象,其值成为函数的返回值?然后调用者获取这个对象来复制初始化w1?或者2)函数获取w1的调用者传递的内存位置,函数的自动变量w用于复制初始化w1?(这已经是某种RVO了吗?还是某种内联函数行为?或者它

c++ - 避免在静态 bool 值上使用 if 语句进行逻辑决策

我有一个类,其成员itemType仅设置一次且从未修改过,但在许多if语句中使用它来决定调用哪个函数。由于itemType仅设置一次,因此有办法避免类中其他地方的if语句。这将简化和清理代码,并且作为奖励还将节省if检查的开销。我正在考虑一个指针函数,我可以根据itemType值在构造函数中初始化它。有没有更好的替代方法?请注意原始类和代码库很大,我无法根据项目类型创建子类。enumItemTypes{ItemTypeA,ItemTypeB,};classItemProcessing{public://ThisfunctioniscalledhundredsoftimesvoidPro

c++ - "Why switch statement cannot be applied on strings?"的答案是否仍然正确,即使使用 C++11/14?

我遇到了这个问题:Whyswitchstatementcannotbeappliedonstrings?并想知道答案是否:Thereasonwhyhastodowiththetypesystem.C/C++doesn'treallysupportstringsasatype.Itdoessupporttheideaofaconstantchararraybutitdoesn'treallyfullyunderstandthenotionofastring.仍然适用,即使在C++11/14中使用std:string。是否有多个elseif(...)的替代方案?